#! /usr/bin/python
# encoding=utf-8
# Created by Fenglu Niu on 2025/5/14 9:22
import os

import requests
from dotenv import load_dotenv


class AliStuAnalysisApi(object):
    __instance = None
    __is_first = True

    def __new__(cls):
        if not cls.__instance:
            cls.__instance = object.__new__(cls)
        return cls.__instance

    def __init__(self):
        if AliStuAnalysisApi.__is_first:
            AliStuAnalysisApi.__is_first = False
            load_dotenv()
            self.__api_key = os.getenv('ALI_STU_ANALYSIS_AGENT_API_KEY')
            self.__app_id = os.getenv('ALI_STU_ANALYSIS_AGENT_APP_ID')
            self.__base_url = os.getenv('ALI_STU_ANALYSIS_AGENT_API_BASE').format(self.__app_id)

    def invoke(self, text: str):
        url = f'{self.__base_url}'
        headers = {
            'Content-Type': 'application/json',
            'Authorization': f'Bearer {self.__api_key}'
        }
        data = {
            'input': {
                'prompt': text
            }
        }

        response = requests.post(url, headers=headers, json=data)
        print(response.json())
        return response.json()

if __name__ == '__main__':
    api = AliStuAnalysisApi()
    api.invoke('''以下是您的课程成绩列表：

| 课程名称                             | 成绩 | 绩点 |
|--------------------------------------|------|------|
| 电商运营设计                         | 93   | 4.3  |
| 装饰基础与材料表现                   | 90   | 4.0  |
| 企业形象设计与应用                   | 93   | 4.3  |
| 形势与政策(3)                        | 99   | 4.9  |
| 习近平新时代中国特色社会主义思想概论1 | 94   | 4.4  |
| 艺术写生实践                         | 88   | 3.8  |
| 体育3                                | 90   | 4.0  |
| 认识实习                             | 98   | 4.8  |
| 劳动教育                             | 100  | 5.0  |
| 网页设计                             | 93   | 4.3  |
| 平面专题实训（标志、宣传册、招贴）   | 82   | 3.2  |
| 招贴设计                             | 87   | 3.7  |
| 艺术鉴赏                             | 85   | 3.5  |

所有课程成绩已按课程名称排序，如需查看具体课程详细信息或有其他需求，请随时告知。''')